package br.com.beautycenter.view;

import br.com.beautycenter.Funcionalidades.Swing;
import br.com.beautycenter.Funcionalidades.Validacoes;
import br.com.beautycenter.DAO.PersisteCliente;
import br.com.beautycenter.DAO.PersistePacoteTratamento;
import br.com.beautycenter.DAO.PersisteSessao;
import br.com.beautycenter.ModelosTabela.TableModelSessoesDia;
import br.com.beautycenter.bean.Cliente;
import br.com.beautycenter.bean.PacoteTratamento;
import br.com.beautycenter.bean.Sessao;
import java.awt.BorderLayout;
import java.awt.Image;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;

public class DadosCliente extends javax.swing.JDialog {
    PersistePacoteTratamento persistePacote = new PersistePacoteTratamento();
    PersisteCliente persisteCliente = new PersisteCliente();
    PersisteSessao persisteSessao = new PersisteSessao();
    
    public static Cliente cliente;
    
    
    /**
     * 
     * Verifica se o cliente possui um pacote de tratamento em aberto. Caso sim, abre a tela com o pacote atual.
     * Caso contrário, pede a quantidade de sessões que conterá esse pacote de tratamento.
     * <br><br>
     *
     * @return 
     * 
     * retorno > 0 - se for o valor digitado for válido<br>
     * null - se o valor digitado for inválido
     * -1 - se o pacote de tratamento para o cliente em questão ainda estiver aberto. 
     */
    public Integer definirListaPacote(int tipo){
        
        Cliente aux = persisteCliente.retornarClientePeloID(cliente);
        PacoteTratamento pacote;
        boolean executar = false;
        
        //verifica se o cliente tem um pacote de tratamento ativo ou não. Caso não tenha, excutar = true
        if(aux.getListaPacotesTratamento(tipo).isEmpty()){
            executar = true;
            System.out.println("lista vazia");
        }else{
            pacote = aux.getListaPacotesTratamento(tipo).get(aux.getListaPacotesTratamento(tipo).size()-1);
            executar = pacote.isQuitado(); //executa se o pacote ja estiver quitado. Será criado um novo
            System.out.println("lista contem algo e ta quitada? " + executar);
        }
        
        //se executar = true, chama um Dialog pedido a quantidade de sessões que conterá esse pacote
        if(executar){
            JLabel label = new JLabel("Quantidade de Sessões: ");
            JTextField campo = new JTextField();
            
            Object[] objetos = {label, campo};
            
            int resposta = JOptionPane.showConfirmDialog(null, objetos, 
                    "Escolha a quantidade de sessões", JOptionPane.OK_CANCEL_OPTION);
            
            //se a pessoa clicou em ok, faz a validação
            if(resposta == JOptionPane.OK_OPTION){
                //se é um número válido
                if(Validacoes.validarCampoNumerico(campo.getText().trim())){
                    return Integer.valueOf(campo.getText().trim());
                }else{
                    JOptionPane.showMessageDialog(null, "Valor informado é inválido");
                    return null;
                }
            }else{
                return null;
            }
        }
        
        return -1;
    }
    
    public void addLista(int tipo, Sessao add){
        switch(tipo){
            case 1:
                CadastroPacoteTratamento.listaSessao.add(add);
                break;
            case 2:
                CadastroPacotePilates.listaSessao.add(add);
                break;
                
            case 3:
                CadastroPacoteLaser.listaSessao.add(add);
                break;
                
            case 4:
                CadastroPacoteAvulso.listaSessao.add(add);
                break;
        }
    }
    
    public void preencherLista(int tipo, PacoteTratamento pacote){
        switch(tipo){
            case 1:
                if(CadastroPacoteTratamento.listaSessao != null) CadastroPacoteTratamento.listaSessao.clear();
                CadastroPacoteTratamento.listaSessao = new ArrayList<Sessao>(
                            pacote.getListaSessoes() == null ? new ArrayList<Sessao>() : pacote.getListaSessoes()
                        );
                break;
            case 2:
                if(CadastroPacotePilates.listaSessao != null) CadastroPacotePilates.listaSessao.clear();
                CadastroPacotePilates.listaSessao = new ArrayList<Sessao>(
                            pacote.getListaSessoes() == null ? new ArrayList<Sessao>() : pacote.getListaSessoes()
                        );
                break;
                
            case 3:
                if(CadastroPacoteLaser.listaSessao != null) CadastroPacoteLaser.listaSessao.clear();
                CadastroPacoteLaser.listaSessao = new ArrayList<Sessao>(
                            pacote.getListaSessoes() == null ? new ArrayList<Sessao>() : pacote.getListaSessoes()
                        );
                break;
                
            case 4:
                if(CadastroPacoteAvulso.listaSessao != null) CadastroPacoteAvulso.listaSessao.clear();
                CadastroPacoteAvulso.listaSessao = new ArrayList<Sessao>(
                            pacote.getListaSessoes() == null ? new ArrayList<Sessao>() : pacote.getListaSessoes()
                        );
                break;
        }
    }
    
    public void criarFrame(int tipo, PacoteTratamento pacote){
        switch(tipo){
            case 1:
                CadastroPacoteTratamento.pacote = pacote;
                CadastroPacoteTratamento.parent = this;
                CadastroPacoteTratamento pacoteTratamento = new CadastroPacoteTratamento();
                Swing.chamarTela(pacoteTratamento);
                break;
            case 2:
                CadastroPacotePilates.pacote = pacote;
                CadastroPacotePilates.parent = this;
                CadastroPacotePilates pacotePilates = new CadastroPacotePilates();
                Swing.chamarTela(pacotePilates);
                break;
                
            case 3:
                CadastroPacoteLaser.pacote = pacote;
                CadastroPacoteLaser.parent = this;
                CadastroPacoteLaser pacoteLaser = new CadastroPacoteLaser();
                Swing.chamarTela(pacoteLaser);
                break;
                
            case 4:
                CadastroPacoteAvulso.pacote = pacote;
                CadastroPacoteAvulso.parent = this;
                CadastroPacoteAvulso pacoteAvulso = new CadastroPacoteAvulso();
                Swing.chamarTela(pacoteAvulso);
                break;
        }
    }
    
    /**
     * Depois de definir como será a lista de sessões no pacote de tratamento, chama a tela de cadastro com essa lista em questão
     */
    public void cadastroPacote(int tipo){
        Integer retorno = definirListaPacote(tipo);
        PacoteTratamento pacote = new PacoteTratamento();
        
        if(retorno == null) return;
        
        if(retorno == -1){
            //se já ter um pacote aberto, cria a tela usando a lista de sessões
            Cliente aux = persisteCliente.retornarClientePeloID(cliente); //retorna o cliente
            pacote = aux.getListaPacotesTratamento(tipo).get(aux.getListaPacotesTratamento(tipo).size()-1); //retorna o último pacote em aberto
            pacote = persistePacote.retornarPacotePeloID(pacote); //busca esse pacote no banco de dados
            
            preencherLista(tipo, pacote);
        }else if(retorno > 0){
            //se não existir pacote em aberto, cria uma lista nova
            preencherLista(tipo, pacote);
             //limpa a lista
            
            //cria um novo pacote de tratamento
            pacote = new PacoteTratamento();
            pacote.setIdPacote(0);
            pacote.setPagamentoEfetuado(false);
            pacote.setQuitado(false);
            pacote.setTipoPacote(tipo);
            pacote.setCliente(cliente);
            
            for(int i=0; i<retorno; i++){
                //cria uma nova sessão
                Sessao sessao = new Sessao();
                sessao.setIdSessao(0);
                sessao.setAlteracao(false);
                sessao.setNumeroSessao(i+1);
                sessao.setDtSessao(new Date());
                sessao.setPacoteTratamento(pacote);
                sessao.setPagamentoEfetuado(0);
                
                //insere na lista
                addLista(tipo, sessao);
                pacote.setTotalPacote(pacote.getTotalPacote() + sessao.getValorSessao());
            }
            pacote.setTotalPago(0);
            
        }
        
        criarFrame(tipo, pacote);
    }
    
    /**
     * Verifica se tem alguma sessao no dia. Caso tenha, exibe a tabela com as sessoes. Caso contrário, mostra uma label
     * informando que não há sessões para o cliente no dia atual.
     */
    public void sessoesDia(){
        Sessao sessao = new Sessao();
        sessao.setDtSessao(new Date());
        List<Sessao> listaSessoes = persisteSessao.retornarSessoesPelaDataCliente(cliente,new Date());
        
        jPanelSessoesDia.setLayout(new BorderLayout());
        //se estiver vazio, exibe a label
        if(listaSessoes.isEmpty()){
            JLabel label = new JLabel("Não há sessões para a data atual.", JLabel.CENTER);
            //label.setSize(jPanelSessoesDia.getWidth(), label.getHeight());
            
            jPanelSessoesDia.add(label, BorderLayout.CENTER);
        }else{
            TableModelSessoesDia modelo = new TableModelSessoesDia(this, listaSessoes);
            JTable tabela = new JTable(modelo);
            JScrollPane scroll = new JScrollPane();
            scroll.setViewportView(tabela);
            
            jPanelSessoesDia.add(scroll);
        }
    }
    
    public final void inicializarTela(){
        
        //insere a foto do cliente
        ImageIcon imagem = new ImageIcon(cliente.getFoto());
        jLabelFoto.setIcon(new ImageIcon(
                    imagem.getImage().getScaledInstance(jLabelFoto.getWidth(), jLabelFoto.getHeight(),Image.SCALE_DEFAULT))
                    );
        
        //insere os outros dados do cliente
        jLNome.setText(cliente.getNome());
        jLEmail.setText(cliente.getEmail());
        jLMedicoResponsavel.setText(cliente.getMedicoResponsavel());
        jLSaldo.setText(Validacoes.formatoMoeda.format(cliente.getCredito()));
    }
    /**
     * Creates new form DadosCliente
     */
    public DadosCliente(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        
        sessoesDia();

        //insere a foto do cliente
        if(cliente.getFoto() != null){
            ImageIcon imagem = new ImageIcon(cliente.getFoto());
            jLabelFoto.setIcon(new ImageIcon(
                imagem.getImage().getScaledInstance(jLabelFoto.getWidth(), jLabelFoto.getHeight(),Image.SCALE_DEFAULT))
            );
        }

        //insere os outros dados do cliente
        jLNome.setText(cliente.getNome());
        jLEmail.setText(cliente.getEmail());
        jLMedicoResponsavel.setText(cliente.getMedicoResponsavel());
        jLSaldo.setText(Validacoes.formatoMoeda.format(cliente.getCredito()));
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanelDadosCliente = new javax.swing.JPanel();
        jPFoto = new javax.swing.JPanel();
        jLabelFoto = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLNome = new javax.swing.JLabel();
        jLEmail = new javax.swing.JLabel();
        jLMedicoResponsavel = new javax.swing.JLabel();
        jLSaldo = new javax.swing.JLabel();
        jPanelFuncionalidades = new javax.swing.JPanel();
        btnPacoteTratamento = new javax.swing.JButton();
        btnPilates = new javax.swing.JButton();
        btnLaser = new javax.swing.JButton();
        btnAvulso = new javax.swing.JButton();
        btnHistoricoPacotes = new javax.swing.JButton();
        jSeparator1 = new javax.swing.JSeparator();
        jPanelSessoesDia = new javax.swing.JPanel();
        jPanelExames = new javax.swing.JPanel();
        btnContraIndicacao = new javax.swing.JButton();
        btnPerfilAntropometrico = new javax.swing.JButton();
        btnExameFisico = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("ERP BEAUTY CENTER - Dados Clientes");

        jPanelDadosCliente.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Dados do Cliente", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION));
        jPanelDadosCliente.setPreferredSize(new java.awt.Dimension(600, 250));

        jPFoto.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        javax.swing.GroupLayout jPFotoLayout = new javax.swing.GroupLayout(jPFoto);
        jPFoto.setLayout(jPFotoLayout);
        jPFotoLayout.setHorizontalGroup(
            jPFotoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLabelFoto, javax.swing.GroupLayout.DEFAULT_SIZE, 197, Short.MAX_VALUE)
        );
        jPFotoLayout.setVerticalGroup(
            jPFotoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLabelFoto, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel1.setText("Nome: ");

        jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel2.setText("E-mail: ");

        jLabel4.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel4.setText("Saldo: ");

        jLabel3.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel3.setText("Médico Responsável: ");

        jLNome.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        jLNome.setText("Nome: ");

        jLEmail.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        jLEmail.setText("Nome: ");

        jLMedicoResponsavel.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        jLMedicoResponsavel.setText("Nome: ");

        jLSaldo.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        jLSaldo.setText("Nome: ");

        javax.swing.GroupLayout jPanelDadosClienteLayout = new javax.swing.GroupLayout(jPanelDadosCliente);
        jPanelDadosCliente.setLayout(jPanelDadosClienteLayout);
        jPanelDadosClienteLayout.setHorizontalGroup(
            jPanelDadosClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelDadosClienteLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPFoto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addGroup(jPanelDadosClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel1)
                    .addComponent(jLabel2)
                    .addComponent(jLabel4)
                    .addComponent(jLabel3))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanelDadosClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLNome)
                    .addComponent(jLEmail)
                    .addComponent(jLMedicoResponsavel)
                    .addComponent(jLSaldo))
                .addContainerGap(197, Short.MAX_VALUE))
        );
        jPanelDadosClienteLayout.setVerticalGroup(
            jPanelDadosClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelDadosClienteLayout.createSequentialGroup()
                .addComponent(jPFoto, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
            .addGroup(jPanelDadosClienteLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanelDadosClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(jLNome))
                .addGap(18, 18, 18)
                .addGroup(jPanelDadosClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(jLEmail))
                .addGap(18, 18, 18)
                .addGroup(jPanelDadosClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(jLMedicoResponsavel))
                .addGap(37, 37, 37)
                .addGroup(jPanelDadosClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(jLSaldo))
                .addContainerGap(75, Short.MAX_VALUE))
        );

        jPanelFuncionalidades.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Pacotes", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION));

        btnPacoteTratamento.setText("Pacote de Tratamento");
        btnPacoteTratamento.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnPacoteTratamentoActionPerformed(evt);
            }
        });

        btnPilates.setText("Pilates");
        btnPilates.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnPilatesActionPerformed(evt);
            }
        });

        btnLaser.setText("Laser");
        btnLaser.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnLaserActionPerformed(evt);
            }
        });

        btnAvulso.setText("Avulso");
        btnAvulso.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAvulsoActionPerformed(evt);
            }
        });

        btnHistoricoPacotes.setText("Histórico de Pacotes");
        btnHistoricoPacotes.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnHistoricoPacotesActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanelFuncionalidadesLayout = new javax.swing.GroupLayout(jPanelFuncionalidades);
        jPanelFuncionalidades.setLayout(jPanelFuncionalidadesLayout);
        jPanelFuncionalidadesLayout.setHorizontalGroup(
            jPanelFuncionalidadesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelFuncionalidadesLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanelFuncionalidadesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jSeparator1, javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanelFuncionalidadesLayout.createSequentialGroup()
                        .addGap(0, 0, Short.MAX_VALUE)
                        .addGroup(jPanelFuncionalidadesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(btnAvulso, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(btnPacoteTratamento, javax.swing.GroupLayout.DEFAULT_SIZE, 146, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanelFuncionalidadesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(btnPilates, javax.swing.GroupLayout.PREFERRED_SIZE, 146, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(btnLaser, javax.swing.GroupLayout.PREFERRED_SIZE, 146, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addGap(409, 409, 409))
            .addGroup(jPanelFuncionalidadesLayout.createSequentialGroup()
                .addGap(81, 81, 81)
                .addComponent(btnHistoricoPacotes, javax.swing.GroupLayout.PREFERRED_SIZE, 146, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanelFuncionalidadesLayout.setVerticalGroup(
            jPanelFuncionalidadesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelFuncionalidadesLayout.createSequentialGroup()
                .addGroup(jPanelFuncionalidadesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnPacoteTratamento, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnPilates, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanelFuncionalidadesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnAvulso, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnLaser))
                .addGap(18, 18, 18)
                .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnHistoricoPacotes, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        jPanelFuncionalidadesLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {btnAvulso, btnHistoricoPacotes, btnLaser, btnPacoteTratamento, btnPilates});

        jPanelSessoesDia.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Sessões do Dia", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION));
        jPanelSessoesDia.setAutoscrolls(true);
        jPanelSessoesDia.setPreferredSize(new java.awt.Dimension(539, 488));

        javax.swing.GroupLayout jPanelSessoesDiaLayout = new javax.swing.GroupLayout(jPanelSessoesDia);
        jPanelSessoesDia.setLayout(jPanelSessoesDiaLayout);
        jPanelSessoesDiaLayout.setHorizontalGroup(
            jPanelSessoesDiaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 527, Short.MAX_VALUE)
        );
        jPanelSessoesDiaLayout.setVerticalGroup(
            jPanelSessoesDiaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 465, Short.MAX_VALUE)
        );

        jPanelExames.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Exames", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION));

        btnContraIndicacao.setText("Contra Indicações");
        btnContraIndicacao.setMaximumSize(new java.awt.Dimension(139, 23));
        btnContraIndicacao.setMinimumSize(new java.awt.Dimension(139, 23));
        btnContraIndicacao.setPreferredSize(new java.awt.Dimension(139, 23));
        btnContraIndicacao.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnContraIndicacaoActionPerformed(evt);
            }
        });

        btnPerfilAntropometrico.setText("Perfil Antropométrico");
        btnPerfilAntropometrico.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnPerfilAntropometricoActionPerformed(evt);
            }
        });

        btnExameFisico.setText("Exames Físicos");
        btnExameFisico.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnExameFisicoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanelExamesLayout = new javax.swing.GroupLayout(jPanelExames);
        jPanelExames.setLayout(jPanelExamesLayout);
        jPanelExamesLayout.setHorizontalGroup(
            jPanelExamesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelExamesLayout.createSequentialGroup()
                .addGap(70, 70, 70)
                .addGroup(jPanelExamesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(btnContraIndicacao, javax.swing.GroupLayout.PREFERRED_SIZE, 146, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnExameFisico, javax.swing.GroupLayout.PREFERRED_SIZE, 146, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnPerfilAntropometrico, javax.swing.GroupLayout.PREFERRED_SIZE, 146, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(70, Short.MAX_VALUE))
        );
        jPanelExamesLayout.setVerticalGroup(
            jPanelExamesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelExamesLayout.createSequentialGroup()
                .addGap(0, 11, Short.MAX_VALUE)
                .addComponent(btnContraIndicacao, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(btnExameFisico, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(btnPerfilAntropometrico))
        );

        jPanelExamesLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {btnContraIndicacao, btnExameFisico, btnPerfilAntropometrico});

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jPanelDadosCliente, javax.swing.GroupLayout.PREFERRED_SIZE, 636, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jPanelFuncionalidades, javax.swing.GroupLayout.PREFERRED_SIZE, 320, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jPanelExames, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanelSessoesDia, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jPanelDadosCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(48, 48, 48)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jPanelFuncionalidades, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jPanelExames, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addComponent(jPanelSessoesDia, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnPacoteTratamentoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPacoteTratamentoActionPerformed
        cadastroPacote(1);
    }//GEN-LAST:event_btnPacoteTratamentoActionPerformed

    private void btnPilatesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPilatesActionPerformed
        cadastroPacote(2);
    }//GEN-LAST:event_btnPilatesActionPerformed

    private void btnLaserActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLaserActionPerformed
        cadastroPacote(3);
    }//GEN-LAST:event_btnLaserActionPerformed

    private void btnAvulsoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAvulsoActionPerformed
        cadastroPacote(4);
    }//GEN-LAST:event_btnAvulsoActionPerformed

    private void btnContraIndicacaoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnContraIndicacaoActionPerformed
        if(cliente.isAtivo()){
            CadastroContraIndicacao contra = new CadastroContraIndicacao((JFrame)this.getParent(), true);
            contra.setLocationRelativeTo(null);
            contra.setVisible(true);
        }else{
            JOptionPane.showMessageDialog(null, "O cadastro de contra indicações pode ser feito apenas para pacientes "
                + "que estão ativos no sistema.");
        }
    }//GEN-LAST:event_btnContraIndicacaoActionPerformed

    private void btnPerfilAntropometricoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPerfilAntropometricoActionPerformed
         if(cliente.isAtivo()){
            CadastroPerfilAntropometrico perfil = new CadastroPerfilAntropometrico((JFrame)this.getParent(), true);
            perfil.setLocationRelativeTo(null);
            perfil.setVisible(true);
        }else{
            JOptionPane.showMessageDialog(null, "O cadastro de perfil antropométrico pode ser feito apenas para pacientes "
                + "que estão ativos no sistema.");
        }
    }//GEN-LAST:event_btnPerfilAntropometricoActionPerformed

    private void btnExameFisicoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExameFisicoActionPerformed
        if(cliente.isAtivo()){
            CadastroExameFisico exame = new CadastroExameFisico((JFrame)this.getParent(), true);
            exame.setLocationRelativeTo(null);
            exame.setVisible(true);
        }else{
            JOptionPane.showMessageDialog(null, "O cadastro de exame físico pode ser feito apenas para pacientes "
                + "que estão ativos no sistema.");
        }
    }//GEN-LAST:event_btnExameFisicoActionPerformed

    private void btnHistoricoPacotesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnHistoricoPacotesActionPerformed
        HistoricoPacotes historico = new HistoricoPacotes();
        historico.txtCliente.setText(cliente.getNome());
        historico.pesquisar(cliente);
        
        historico.setLocationRelativeTo(null);
        historico.setVisible(true);
    }//GEN-LAST:event_btnHistoricoPacotesActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAvulso;
    private javax.swing.JButton btnContraIndicacao;
    private javax.swing.JButton btnExameFisico;
    private javax.swing.JButton btnHistoricoPacotes;
    private javax.swing.JButton btnLaser;
    private javax.swing.JButton btnPacoteTratamento;
    private javax.swing.JButton btnPerfilAntropometrico;
    private javax.swing.JButton btnPilates;
    private javax.swing.JLabel jLEmail;
    private javax.swing.JLabel jLMedicoResponsavel;
    private javax.swing.JLabel jLNome;
    private javax.swing.JLabel jLSaldo;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabelFoto;
    private javax.swing.JPanel jPFoto;
    private javax.swing.JPanel jPanelDadosCliente;
    private javax.swing.JPanel jPanelExames;
    private javax.swing.JPanel jPanelFuncionalidades;
    private javax.swing.JPanel jPanelSessoesDia;
    private javax.swing.JSeparator jSeparator1;
    // End of variables declaration//GEN-END:variables
}